package fi.uba.algocontrol.model.niveles;


import java.util.Collection;
import java.util.LinkedList;

/**
 * clase nueva: Puntaje usa patron Singleton
 * */

public class Puntaje {
	
	// atributos
	private Integer conteo = null;
	private static Puntaje INSTANCE = null;
    private Collection<PuntajeListener> listeners;

	// metodos
	private Puntaje(){
		
		this.conteo = 0;
        this.listeners = new LinkedList<PuntajeListener>();
	};

	public static Puntaje getInstance()
    {
       if (INSTANCE == null)
       {
           INSTANCE = new Puntaje();
       }

       return INSTANCE;
    }
   
	
	public void incrementar()
    {
	    this.conteo = this.conteo + 1;
        for (PuntajeListener listener : this.listeners)
        {
            listener.puntajeActualizado(this.conteo);
        }

	}

	public Integer getPuntaje(){
	    return this.conteo;
	}

    public void agregarListener(PuntajeListener listener)
    {
        this.listeners.add(listener);
    }

    public void borrarListener(PuntajeListener listener)
    {
        this.listeners.remove(listener);
    }

    public void reiniciar()
    {
        this.conteo = 0;
        for (PuntajeListener listener : this.listeners)
        {
            listener.puntajeActualizado(this.conteo);
        }
    }

}
